﻿<!--***********************************************************************************

   Extended WPF Toolkit

   Copyright (C) 2007-2013 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license 

   For more features, controls, and fast professional support,
   pick up the Plus Edition at http://xceed.com/wpf_toolkit

   Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids

  **********************************************************************************-->

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:Xceed.Wpf.Toolkit"
                    xmlns:chrome="clr-namespace:Xceed.Wpf.Toolkit.Chromes"
                    xmlns:conv="clr-namespace:Xceed.Wpf.Toolkit.Core.Converters">

   <conv:InverseBoolConverter x:Key="InverseBoolConverter" />

   <LinearGradientBrush x:Key="PopupDarkBorderBrush" EndPoint="0.5,1" StartPoint="0.5,0">
      <GradientStop Color="#FFA3AEB9" Offset="0" />
      <GradientStop Color="#FF8399A9" Offset="0.375" />
      <GradientStop Color="#FF718597" Offset="0.375" />
      <GradientStop Color="#FF617584" Offset="1" />
   </LinearGradientBrush>

   <LinearGradientBrush x:Key="PopupBackgroundBrush" StartPoint="0,0" EndPoint="0,1">
      <LinearGradientBrush.GradientStops>
         <GradientStopCollection>
            <GradientStop Offset="0" Color="#FFffffff" />
            <GradientStop Offset="1" Color="#FFE8EBED" />
         </GradientStopCollection>
      </LinearGradientBrush.GradientStops>
   </LinearGradientBrush>

   <Style x:Key="CalculatorToggleButtonStyle" TargetType="ToggleButton">
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="ToggleButton">
               <Grid SnapsToDevicePixels="True">
                  <chrome:ButtonChrome x:Name="ToggleButtonChrome"
                                       CornerRadius="0,2.75,2.75,0"
                                       RenderChecked="{Binding IsOpen, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:CalculatorUpDown}}"
                                       RenderEnabled="{Binding IsEnabled, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:CalculatorUpDown}}"
											      RenderMouseOver="{TemplateBinding IsMouseOver}"
											      RenderPressed="{TemplateBinding IsPressed}">

                     <Grid>
                        <Grid.ColumnDefinitions>
                           <ColumnDefinition Width="*" />
                           <ColumnDefinition Width="Auto" />
                        </Grid.ColumnDefinitions>

                        <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />

                        <Grid x:Name="arrowGlyph" IsHitTestVisible="False" Grid.Column="1" Margin="5">
                           <Path x:Name="Arrow" Width="7" Height="4" Data="M 0,1 C0,1 0,0 0,0 0,0 3,0 3,0 3,0 3,1 3,1 3,1 4,1 4,1 4,1 4,0 4,0 4,0 7,0 7,0 7,0 7,1 7,1 7,1 6,1 6,1 6,1 6,2 6,2 6,2 5,2 5,2 5,2 5,3 5,3 5,3 4,3 4,3 4,3 4,4 4,4 4,4 3,4 3,4 3,4 3,3 3,3 3,3 2,3 2,3 2,3 2,2 2,2 2,2 1,2 1,2 1,2 1,1 1,1 1,1 0,1 0,1 z" Fill="#FF000000" />
                        </Grid>
                     </Grid>
                  </chrome:ButtonChrome>
               </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Fill" TargetName="Arrow" Value="#AFAFAF" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

   <DataTemplate x:Key="DefaultWatermarkTemplate">
      <ContentControl Content="{Binding}" Foreground="Gray" Focusable="False" Margin="0,0,3,0" />
   </DataTemplate>

   <!-- =============================================================================== -->
   <!-- CalculatorUpDown                                                                -->
   <!-- =============================================================================== -->

   <Style TargetType="{x:Type local:CalculatorUpDown}">
      <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" />
      <Setter Property="BorderThickness" Value="1,1,0,1" />
      <Setter Property="Focusable" Value="False" />
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
      <Setter Property="HorizontalContentAlignment" Value="Right" />
      <Setter Property="TextAlignment" Value="Right" />
      <Setter Property="WatermarkTemplate" Value="{StaticResource DefaultWatermarkTemplate}" />
      <Setter Property="Template">
         <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:CalculatorUpDown}">
               <Grid>
                  <Grid>
                     <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                     </Grid.ColumnDefinitions>
                     <local:ButtonSpinner x:Name="PART_Spinner"
                                          IsTabStop="False"
                                          Background="{TemplateBinding Background}"
                                          BorderThickness="{TemplateBinding BorderThickness}"
                                          AllowSpin="{TemplateBinding AllowSpin}"
                                          ShowButtonSpinner="{TemplateBinding ShowButtonSpinner}">
                        <local:WatermarkTextBox x:Name="PART_TextBox"
                                                BorderThickness="0" 
                                                Background="{TemplateBinding Background}"
                                                ContextMenu="{TemplateBinding ContextMenu}"
                                                FontFamily="{TemplateBinding FontFamily}" 
                                                FontSize="{TemplateBinding FontSize}" 
                                                FontStretch="{TemplateBinding FontStretch}"
                                                FontStyle="{TemplateBinding FontStyle}" 
                                                FontWeight="{TemplateBinding FontWeight}" 
                                                Foreground="{TemplateBinding Foreground}" 
                                                HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}"
                                                MinWidth="20"
                                                AcceptsReturn="False"
                                                Padding="0"
                                                SelectAllOnGotFocus="{TemplateBinding SelectAllOnGotFocus}"
                                                AutoSelectBehavior="{TemplateBinding AutoSelectBehavior}"
                                                AutoMoveFocus="{TemplateBinding AutoMoveFocus}"
                                                TextAlignment="{TemplateBinding TextAlignment}"
                                                TextWrapping="NoWrap" 
                                                TabIndex="{TemplateBinding TabIndex}"
                                                VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
                                                Watermark="{TemplateBinding Watermark}"
                                                WatermarkTemplate="{TemplateBinding WatermarkTemplate}" />
                     </local:ButtonSpinner>
                     <ToggleButton x:Name="_calculatorToggleButton"
                                   Grid.Column="1"
                                   Focusable="False"
                                   IsChecked="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}}"
                                   Style="{StaticResource CalculatorToggleButtonStyle}"
                                   IsHitTestVisible="{Binding IsOpen, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource InverseBoolConverter}}" />
                  </Grid>
                  <Popup x:Name="PART_CalculatorPopup"
                         IsOpen="{Binding IsChecked, ElementName=_calculatorToggleButton}"
                         StaysOpen="False">
                     <Border BorderThickness="1" Background="{StaticResource PopupBackgroundBrush}" BorderBrush="{StaticResource PopupDarkBorderBrush}" Padding="3">
                        <StackPanel>
                           <local:Calculator x:Name="PART_Calculator"
                                             Background="Transparent"
                                             BorderThickness="0"
                                             DisplayText="{Binding DisplayText, RelativeSource={RelativeSource TemplatedParent}}"
                                             Memory="{Binding Memory, RelativeSource={RelativeSource TemplatedParent}}"
                                             Precision="{Binding Precision, RelativeSource={RelativeSource TemplatedParent}}" />
                        </StackPanel>
                     </Border>
                  </Popup>
               </Grid>
            </ControlTemplate>
         </Setter.Value>
      </Setter>
   </Style>

</ResourceDictionary>
